import requests
from bs4 import BeautifulSoup
import openpyxl

def html_get():
    header = {'User-Agent': ''}
    global lst
    lst = [['编号', '名称', '推荐语', '评分', '链接地址']]  # 初始化为一个包含标题的列表

    for i in range(10):  # 产生 0~9 的整数序列
        url = f'https://movie.douban.com/top250?start={i * 25}&filter='  # 通过循环改变 url 地址，实现页码遍历

        resp = requests.get(url, headers=header)           # 请求方式为 GET
        bs = BeautifulSoup(resp.text, 'html.parser')       # 解析内容，使用 html.parser
        grid_view = bs.find('ol', class_='grid_view')      # 找到电影列表容器
        all_li = grid_view.find_all('li')                  # 找到每一部电影的 li 标签

        for item in all_li:  # 遍历所有 li
            no = item.find('em').text                      # 编号
            title = item.find('span', class_='title').text  # 电影名称
            inq1 = item.find('span', class_='inq')         # 推荐语标签

            if inq1:
                inq = inq1.text
            else:
                inq = "无推荐语"

            rat = item.find('span', class_='rating_num').text     # 评分
            url_films = item.find('a')['href']                    # 链接地址

            print(no, title, inq, rat, url_films)
            lst.append([no, title, inq, rat, url_films])          # 添加进列表

def file_storage():
    wb = openpyxl.Workbook()                   # 新建一个工作簿
    sheet = wb.active                          # 激活默认工作表
    sheet.title = 'filmsTop250'                # 设置工作表标题

    for item in lst:                           # 将数据写入工作表
        sheet.append(item)

    wb.save('films.xlsx')                      # 保存 Excel 文件

if __name__ == '__main__':
    html_get()
    file_storage()
